home *** CD-ROM | disk | FTP | other *** search
- package java.text;
-
- import java.util.Calendar;
- import java.util.Date;
- import java.util.Locale;
- import java.util.ResourceBundle;
- import java.util.SimpleTimeZone;
- import java.util.TimeZone;
-
- public class SimpleDateFormat extends DateFormat {
- private String pattern;
- private DateFormatSymbols formatData;
- private static final int millisPerHour = 3600000;
- private static final int millisPerMinute = 60000;
- private static final String GMT_PLUS = "GMT+";
- private static final String GMT_MINUS = "GMT-";
- private static final String GMT = "GMT";
-
- public SimpleDateFormat() {
- this(3, 7, Locale.getDefault());
- }
-
- public SimpleDateFormat(String var1) {
- this.pattern = var1;
- this.formatData = new DateFormatSymbols();
- this.initialize(Locale.getDefault());
- }
-
- public SimpleDateFormat(String var1, Locale var2) {
- this.pattern = var1;
- this.formatData = new DateFormatSymbols(var2);
- this.initialize(var2);
- }
-
- public SimpleDateFormat(String var1, DateFormatSymbols var2) {
- this.pattern = var1;
- this.formatData = var2;
- this.initialize(Locale.getDefault());
- }
-
- SimpleDateFormat(int var1, int var2, Locale var3) {
- ResourceBundle var4 = ResourceBundle.getBundle("java.text.resources.LocaleElements", var3);
- this.formatData = new DateFormatSymbols(var3);
- String[] var5 = var4.getStringArray("DateTimePatterns");
- if (var1 >= 0 && var2 >= 0) {
- Object[] var6 = new Object[]{var5[var1], var5[var2]};
- this.pattern = MessageFormat.format(var5[8], var6);
- } else if (var1 >= 0) {
- this.pattern = var5[var1];
- } else {
- if (var2 < 0) {
- throw new IllegalArgumentException("No date or time style specified");
- }
-
- this.pattern = var5[var2];
- }
-
- this.initialize(var3);
- }
-
- private void initialize(Locale var1) {
- super.calendar = Calendar.getInstance((SimpleTimeZone)TimeZone.getTimeZone(this.formatData.zoneStrings[0][0]), var1);
- super.numberFormat = NumberFormat.getInstance(var1);
- super.numberFormat.setGroupingUsed(false);
- if (super.numberFormat instanceof DecimalFormat) {
- ((DecimalFormat)super.numberFormat).setDecimalSeparatorAlwaysShown(false);
- }
-
- super.numberFormat.setParseIntegerOnly(true);
- }
-
- public StringBuffer format(Date var1, StringBuffer var2, FieldPosition var3) {
- var3.beginIndex = var3.endIndex = 0;
- super.calendar.setTime(var1);
- boolean var4 = false;
- char var5 = 0;
- int var6 = 0;
-
- for(int var7 = 0; var7 < this.pattern.length(); ++var7) {
- char var8 = this.pattern.charAt(var7);
- if (var4) {
- if (var8 == '\'') {
- var4 = false;
- if (var6 == 0) {
- var2.append(var8);
- } else {
- var6 = 0;
- }
- } else {
- var2.append(var8);
- ++var6;
- }
- } else if (var8 == '\'') {
- var4 = true;
- if (var6 > 0) {
- var2.append(this.subFormat(var5, var6, var2.length(), var3));
- var6 = 0;
- var5 = 0;
- }
- } else if (var8 >= 'a' && var8 <= 'z' || var8 >= 'A' && var8 <= 'Z') {
- if (var8 != var5 && var6 > 0) {
- var2.append(this.subFormat(var5, var6, var2.length(), var3));
- var5 = var8;
- var6 = 1;
- } else {
- if (var8 != var5) {
- var5 = var8;
- }
-
- ++var6;
- }
- } else if (var6 > 0) {
- var2.append(this.subFormat(var5, var6, var2.length(), var3));
- var2.append(var8);
- var5 = 0;
- var6 = 0;
- } else {
- var2.append(var8);
- }
- }
-
- if (var6 > 0) {
- var2.append(this.subFormat(var5, var6, var2.length(), var3));
- }
-
- return var2;
- }
-
- private String subFormat(char var1, int var2, int var3, FieldPosition var4) throws IllegalArgumentException {
- int var5 = 0;
- int var6 = -1;
- String var7 = "";
- if ((var6 = "GyMdkHmsSEDFwWahKz".indexOf(var1)) == -1) {
- throw new IllegalArgumentException("Illegal pattern character '" + var1 + "'");
- } else {
- switch (var6) {
- case 0:
- var5 = super.calendar.get(0);
- var7 = this.formatData.eras[var5];
- break;
- case 1:
- var5 = super.calendar.get(1);
- if (var2 >= 4) {
- var7 = this.zeroPaddingNumber((long)var5, 4, 10);
- } else {
- var7 = this.zeroPaddingNumber((long)var5, 2, 2);
- }
- break;
- case 2:
- var5 = super.calendar.get(2);
- if (var2 >= 4) {
- var7 = this.formatData.months[var5];
- } else if (var2 == 3) {
- var7 = this.formatData.shortMonths[var5];
- } else {
- var7 = this.zeroPaddingNumber((long)(var5 + 1), var2, 10);
- }
- break;
- case 3:
- var5 = super.calendar.get(5);
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 4:
- if ((var5 = super.calendar.get(11)) == 0) {
- var7 = this.zeroPaddingNumber((long)(super.calendar.getMaximum(11) + 1), var2, 10);
- } else {
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- }
- break;
- case 5:
- var5 = super.calendar.get(11);
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 6:
- var5 = super.calendar.get(12);
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 7:
- var5 = super.calendar.get(13);
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 8:
- var5 = super.calendar.get(14);
- if (var2 > 3) {
- var2 = 3;
- } else if (var2 == 2) {
- var5 /= 10;
- } else if (var2 == 1) {
- var5 /= 100;
- }
-
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 9:
- var5 = super.calendar.get(7);
- if (var2 >= 4) {
- var7 = this.formatData.weekdays[var5];
- } else {
- var7 = this.formatData.shortWeekdays[var5];
- }
- break;
- case 10:
- var5 = super.calendar.get(6);
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 11:
- var5 = super.calendar.get(8);
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 12:
- var5 = super.calendar.get(3);
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 13:
- var5 = super.calendar.get(4);
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 14:
- var5 = super.calendar.get(9);
- var7 = this.formatData.ampms[var5];
- break;
- case 15:
- if ((var5 = super.calendar.get(10)) == 0) {
- var7 = this.zeroPaddingNumber((long)(super.calendar.getLeastMaximum(10) + 1), var2, 10);
- } else {
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- }
- break;
- case 16:
- var5 = super.calendar.get(10);
- var7 = this.zeroPaddingNumber((long)var5, var2, 10);
- break;
- case 17:
- int var8 = this.formatData.getZoneIndex(super.calendar.getTimeZone().getID());
- if (var8 == -1) {
- StringBuffer var9 = new StringBuffer();
- var5 = super.calendar.get(15) + super.calendar.get(16);
- if (var5 < 0) {
- var9.append("GMT-");
- var5 = -var5;
- } else {
- var9.append("GMT+");
- }
-
- var9.append(this.zeroPaddingNumber((long)(var5 / 3600000), 2, 2));
- var9.append(':');
- var9.append(this.zeroPaddingNumber((long)(var5 % 3600000 / '\uea60'), 2, 2));
- var7 = var9.toString();
- } else if (super.calendar.get(16) != 0) {
- if (var2 >= 4) {
- var7 = this.formatData.zoneStrings[var8][3];
- } else {
- var7 = this.formatData.zoneStrings[var8][4];
- }
- } else if (var2 >= 4) {
- var7 = this.formatData.zoneStrings[var8][1];
- } else {
- var7 = this.formatData.zoneStrings[var8][2];
- }
- }
-
- if (var4.field == var6 && var4.beginIndex == 0 && var4.endIndex == 0) {
- var4.beginIndex = var3;
- var4.endIndex = var3 + var7.length();
- }
-
- return var7;
- }
- }
-
- private String zeroPaddingNumber(long var1, int var3, int var4) {
- super.numberFormat.setMinimumIntegerDigits(var3);
- super.numberFormat.setMaximumIntegerDigits(var4);
- return super.numberFormat.format(var1);
- }
-
- public Date parse(String var1, ParsePosition var2) {
- int var10 = var2.index;
- int var4 = var10;
- super.calendar.clear();
- boolean var5 = false;
- char var6 = 0;
- int var7 = 0;
-
- for(int var8 = 0; var8 < this.pattern.length(); ++var8) {
- char var9 = this.pattern.charAt(var8);
- if (var5) {
- if (var9 == '\'') {
- var5 = false;
- if (var6 == '\'') {
- ++var10;
- }
- } else {
- if (var9 != var1.charAt(var10)) {
- var2.index = var4;
- return null;
- }
-
- ++var10;
- var6 = var9;
- }
- } else if (var9 == '\'') {
- var5 = true;
- if (var7 > 0) {
- if ((var10 = this.subParse(var1, var10, var6, var7)) < 0) {
- var2.index = var4;
- return null;
- }
-
- var7 = 0;
- }
-
- var6 = var9;
- } else if (var9 >= 'a' && var9 <= 'z' || var9 >= 'A' && var9 <= 'Z') {
- if (var9 != var6 && var7 > 0) {
- if ((var10 = this.subParse(var1, var10, var6, var7)) < 0) {
- var2.index = var4;
- return null;
- }
-
- var6 = var9;
- var7 = 1;
- } else {
- if (var9 != var6) {
- var6 = var9;
- }
-
- ++var7;
- }
- } else if (var7 > 0) {
- if ((var10 = this.subParse(var1, var10, var6, var7)) < 0) {
- var2.index = var4;
- return null;
- }
-
- if (var9 != var1.charAt(var10)) {
- var2.index = var4;
- return null;
- }
-
- ++var10;
- var7 = 0;
- var6 = 0;
- } else {
- if (var9 != var1.charAt(var10)) {
- var2.index = var4;
- return null;
- }
-
- ++var10;
- }
- }
-
- if (var7 > 0 && (var10 = this.subParse(var1, var10, var6, var7)) < 0) {
- var2.index = var4;
- return null;
- } else {
- var2.index = var10;
- if (!super.calendar.isSet(1)) {
- super.calendar.set(1, 1970);
- }
-
- if (!super.calendar.isSet(2)) {
- super.calendar.set(2, 0);
- }
-
- if (!super.calendar.isSet(5)) {
- super.calendar.set(5, 1);
- }
-
- if (!super.calendar.isSet(11) && !super.calendar.isSet(10)) {
- super.calendar.set(11, 0);
- }
-
- if (!super.calendar.isSet(12)) {
- super.calendar.set(12, 0);
- }
-
- if (!super.calendar.isSet(13)) {
- super.calendar.set(13, 0);
- }
-
- if (!super.calendar.isSet(14)) {
- super.calendar.set(14, 0);
- }
-
- if (!super.calendar.isSet(0)) {
- super.calendar.set(0, 1);
- }
-
- return super.calendar.getTime();
- }
- }
-
- private int matchString(String var1, int var2, int var3, String[] var4) {
- int var5 = 0;
- int var6 = var4.length;
- if (var3 == 7) {
- var5 = 1;
- }
-
- while(var5 < var6 && (var4[var5].length() == 0 || !var1.regionMatches(true, var2, var4[var5], 0, var4[var5].length()))) {
- ++var5;
- }
-
- if (var5 < var6) {
- super.calendar.set(var3, var5);
- return var2 + var4[var5].length();
- } else {
- return -var2;
- }
- }
-
- private int subParse(String var1, int var2, char var3, int var4) {
- int var5 = 0;
- ParsePosition var7 = new ParsePosition(0);
- int var8 = -1;
- if ((var8 = "GyMdkHmsSEDFwWahKz".indexOf(var3)) == -1) {
- return -var2;
- } else {
- var7.index = var2;
- switch (var8) {
- case 0:
- return this.matchString(var1, var2, 0, this.formatData.eras);
- case 1:
- if (var4 >= 4) {
- var5 = (int)Integer.valueOf(var1.substring(var2, var2 + var4)).longValue();
- super.calendar.set(1, var5);
- } else {
- var5 = (int)Integer.valueOf(var1.substring(var2, var2 + 2)).longValue();
- super.calendar.set(1, var5 + 1900);
- }
-
- return var2 + var4;
- case 2:
- if (var4 <= 2) {
- super.calendar.set(2, super.numberFormat.parse(var1, var7).intValue() - 1);
- return var7.index;
- } else {
- int var24 = 0;
- if ((var24 = this.matchString(var1, var2, 2, this.formatData.months)) > 0) {
- return var24;
- }
-
- return this.matchString(var1, var2, 2, this.formatData.shortMonths);
- }
- case 3:
- super.calendar.set(5, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 4:
- var5 = super.numberFormat.parse(var1, var7).intValue();
- if (var5 == super.calendar.getMaximum(11) + 1) {
- super.calendar.set(11, 0);
- } else {
- super.calendar.set(11, var5);
- }
-
- return var7.index;
- case 5:
- super.calendar.set(11, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 6:
- super.calendar.set(12, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 7:
- super.calendar.set(13, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 8:
- super.calendar.set(14, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 9:
- int var22 = 0;
- if ((var22 = this.matchString(var1, var2, 7, this.formatData.weekdays)) > 0) {
- return var22;
- }
-
- return this.matchString(var1, var2, 7, this.formatData.shortWeekdays);
- case 10:
- super.calendar.set(6, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 11:
- super.calendar.set(8, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 12:
- super.calendar.set(3, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 13:
- super.calendar.set(4, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 14:
- return this.matchString(var1, var2, 9, this.formatData.ampms);
- case 15:
- var5 = super.numberFormat.parse(var1, var7).intValue();
- if (var5 == super.calendar.getLeastMaximum(10) + 1) {
- super.calendar.set(10, 0);
- } else {
- super.calendar.set(10, var5);
- }
-
- return var7.index;
- case 16:
- super.calendar.set(10, super.numberFormat.parse(var1, var7).intValue());
- return var7.index;
- case 17:
- for(int var6 = 0; var6 < this.formatData.zoneStrings.length; ++var6) {
- int var9;
- for(var9 = 1; var9 <= 4 && !var1.regionMatches(true, var2, this.formatData.zoneStrings[var6][var9], 0, this.formatData.zoneStrings[var6][var9].length()); ++var9) {
- }
-
- if (var9 <= 4) {
- super.calendar.set(15, TimeZone.getTimeZone(this.formatData.zoneStrings[var6][0]).getRawOffset());
- if (var9 >= 3) {
- super.calendar.set(16, 3600000);
- }
-
- return var2 + this.formatData.zoneStrings[var6][var9].length();
- }
- }
-
- if (var1.regionMatches(true, var2, "GMT", 0, "GMT".length())) {
- super.calendar.set(16, 0);
- var7.index = var2 + "GMT".length();
- int var19 = 0;
- byte var26;
- if (var1.regionMatches(var7.index, "+", 0, 1)) {
- var26 = 1;
- } else {
- if (!var1.regionMatches(var7.index, "-", 0, 1)) {
- super.calendar.set(15, 0);
- return var7.index;
- }
-
- var26 = -1;
- }
-
- ++var7.index;
- Number var28 = super.numberFormat.parse(var1, var7);
- if (var28 == null) {
- return -var2;
- } else {
- if (var1.regionMatches(var7.index, ":", 0, 1)) {
- var19 = var28.intValue() * 60;
- ++var7.index;
- var28 = super.numberFormat.parse(var1, var7);
- if (var28 == null) {
- return -var2;
- }
-
- var19 += var28.intValue();
- } else {
- int var30 = var28.intValue();
- if (var30 < 24) {
- var19 = var30 * 60;
- } else {
- var19 = var30 % 100 + var30 / 100 * 60;
- }
- }
-
- super.calendar.set(15, var19 * '\uea60' * var26);
- return var7.index;
- }
- } else {
- DecimalFormat var18 = new DecimalFormat("+####;-####", new DecimalFormatSymbols(Locale.US));
- Number var10 = var18.parse(var1, var7);
- if (var10 == null) {
- return -var2;
- } else {
- int var11 = var10.intValue();
- byte var12 = 1;
- if (var11 < 0) {
- var12 = -1;
- var11 *= -1;
- }
-
- if (var11 < 24) {
- var11 *= 60;
- } else {
- var11 = var11 % 100 + var11 / 100 * 60;
- }
-
- super.calendar.set(15, var11 * '\uea60' * var12);
- return var7.index;
- }
- }
- default:
- return -var2;
- }
- }
- }
-
- private String translatePattern(String var1, String var2, String var3) {
- StringBuffer var4 = new StringBuffer();
- boolean var5 = false;
-
- for(int var6 = 0; var6 < var1.length(); ++var6) {
- char var7 = var1.charAt(var6);
- if (var5) {
- if (var7 == '\'') {
- var5 = false;
- }
- } else if (var7 == '\'') {
- var5 = true;
- } else if (var7 >= 'a' && var7 <= 'z' || var7 >= 'A' && var7 <= 'Z') {
- int var8 = var2.indexOf(var7);
- if (var8 == -1) {
- throw new IllegalArgumentException("Illegal pattern character '" + var7 + "'");
- }
-
- var7 = var3.charAt(var8);
- }
-
- var4.append(var7);
- }
-
- if (var5) {
- throw new IllegalArgumentException("Unfinished quote in pattern");
- } else {
- return var4.toString();
- }
- }
-
- public String toPattern() {
- return this.pattern;
- }
-
- public String toLocalizedPattern() {
- return this.translatePattern(this.pattern, "GyMdkHmsSEDFwWahKz", this.formatData.localPatternChars);
- }
-
- public void applyPattern(String var1) {
- this.pattern = var1;
- }
-
- public void applyLocalizedPattern(String var1) {
- this.pattern = this.translatePattern(var1, this.formatData.localPatternChars, "GyMdkHmsSEDFwWahKz");
- }
-
- public DateFormatSymbols getDateFormatSymbols() {
- return (DateFormatSymbols)this.formatData.clone();
- }
-
- public void setDateFormatSymbols(DateFormatSymbols var1) {
- this.formatData = (DateFormatSymbols)var1.clone();
- }
-
- public Object clone() {
- SimpleDateFormat var1 = (SimpleDateFormat)super.clone();
- var1.formatData = (DateFormatSymbols)this.formatData.clone();
- return var1;
- }
-
- public int hashCode() {
- return this.pattern.hashCode();
- }
-
- public boolean equals(Object var1) {
- if (!super.equals(var1)) {
- return false;
- } else {
- SimpleDateFormat var2 = (SimpleDateFormat)var1;
- return this.pattern.equals(var2.pattern) && this.formatData.equals(var2.formatData);
- }
- }
- }
-